package com.emapp.lccode.base

import android.os.Bundle
import android.os.PersistableBundle
import android.widget.ImageView
import androidx.viewbinding.ViewBinding
import com.emapp.lccode.R
import com.emapp.lccode.utils.XtomLogger
import com.gyf.immersionbar.ktx.immersionBar
import com.jaeger.library.StatusBarUtil
import com.mylhyl.circledialog.CircleDialog
import me.hgj.jetpackmvvm.base.activity.BaseVmVbActivity
import me.hgj.jetpackmvvm.base.viewmodel.BaseViewModel

/**
 * 描述　: 你项目中的Activity基类，在这里实现显示弹窗，吐司，还有加入自己的需求操作 ，如果不想用 Databind，请继承
 * BaseVmActivity例如
 * abstract class BaseActivity<VM : BaseViewModel> : BaseVmActivity<VM>() {
 */
abstract class BaseActivity1<VM : BaseViewModel, VB : ViewBinding> : BaseVmVbActivity<VM, VB>() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        onBindViewClick()
    }
    abstract override fun initView(savedInstanceState: Bundle?)

    /**
     * 创建liveData观察者
     */
    override fun createObserver() {}
    /**
     * 点击事件方法 配合setOnclick()拓展函数调用，做到黄油刀类似的点击事件
     */
    open fun onBindViewClick() {}
    /**
     * 打开等待框
     */
    override fun showLoading(message: String) {
        showLoadingExt(message)
    }

    /**
     * 关闭等待框
     */
    override fun dismissLoading() {
        dismissLoadingExt()
    }

    /* */
    /**
     * 在任何情况下本来适配正常的布局突然出现适配失效，适配异常等问题，只要重写 Activity 的 getResources() 方法
     *//*
    override fun getResources(): Resources {
        AutoSizeCompat.autoConvertDensityOfGlobal(super.getResources())
        return super.getResources()
    }*/
    protected val TAG: String? = this.javaClass.simpleName

    protected open fun log_e(msg: String?) {
        if (BaseConfig.isDebug) XtomLogger.e(TAG, msg)
    }
    var builder =  CircleDialog.Builder()
    private fun showLoadingExt(message: String = "请求网络中") {
        if (!isFinishing) {
            builder.dismiss()
            builder
                //.setTitle("提示")
                // .setSubTitle("副提示语") // .setTypeface(typeface)
                .setWidth(0.6f)
                .setLottieAnimation("loading/loading1.json") // 有文件夹的
                .setLottieLoop(true)
                .playLottieAnimation()
                .setLottieText(message)
                .show(supportFragmentManager)
        }
    }

    private  fun dismissLoadingExt() {
        builder.dismiss()
    }
}